热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

EMNLP2021|实体关系抽取新SoTA对NER和RE任务进行联合编码

每天给你送来NLP技术干货!来自:FundanNLPMotivation在实体关系抽取中,前人在编码任务特征上大致上可以划分为两类

每天给你送来NLP技术干货!


来自:FundanNLP

Motivation

在实体关系抽取中,前人在编码任务特征上大致上可以划分为两类:序列编码(Sequential Encoding)和平行编码(Parallel Encoding)。

序列编码一般按先NER再RE的先后顺序对任务特征进行编码,这种编码方式会使得后编码的特征无法直接影响到先编码的特征,从而导致不平衡的任务间交互。

平行编码则是使用两个独立的编码器来生成任务特征,这种编码方式除了共享输入外就再无其他交互方式, 这会导致不充分的任务间交互。

5389e79740d572b1c8f2298332060c9c.png

论文链接:https://arxiv.org/pdf/2108.12202.pdf

代码链接:https://github.com/Coopercoppers/PFN


主要工作

本文提出了新的编码范式-联合编码(Joint Encoding),并基于该范式设计出一种适配多任务学习的编码器 – 分区过滤编码器(Partition Filter Encoder)。

该编码器能够同时编码NER和RE的任务特征来保证充分平衡的任务间交互,从而有效规避序列编码和平行编码带来的不足。文章的主要贡献如下:

  1. 提出一种基于联合编码的分区过滤网络。

  2. 模型在6个数据集上取得了SoTA,超过了TpLinker、Table-Sequence、PURE等多个联合/流水线抽取SoTA模型。

  3. 探讨了RE对NER的作用,通过辅助实验得出:RE对NER具有显著的促进作用。该结论佐证了联合抽取的必要性以及其相较于流水线抽取的优越性。

模型结构

模型主要划分为两个模块:分区过滤编码器(Partition Filter Encoder)和解码单元(NER Unit and RE Unit)。解码部分使用了常见的填表方法(Table Filling)。

be90066222e26d30bdfccf079e15b684.png

编码部分

编码器采用了类似LSTM的自回归形式。对每个时刻,编码过程被划分成了两步:分区(Partition)和过滤(Filter)。分区指的是将神经元划分为三个独立区域:一个共享区(Shared Partition)和两个任务独享区(实体区和关系区),过滤则是将这些分区进行组合,去掉与任务无关的分区。

ce50eba7db5f8f77122e79e0edd343f5.png

分区

模型使用了实体门e和关系门r来对神经元进行分区。这里神经元指的是类似LSTM中的cell单元。

首先根据对NER/RE的有用程度,实体门/关系门会把cell划分成两个区域,一个与任务相关,一个与任务无关。如上图所示,根据NER和RE的划分结果,我们最后得到了三个分区,中间的共享区(Shared)表示对NER和RE都有用的信息,两端的任务独享区表示只与单个任务有关的信息。

实体门e和关系门r的计算采用了cummax激活函数,输入为当前时刻的输入xt以及上一时刻的隐状态ht-1:

965f976647f9033ac7ebbbc9b982a522.png

cummax的计算包括两步:

  • 第一步是对每个神经元进行Softmax()操作,这一步用来确定分区的割点。

  • 第二步计算每个神经元的累加值,即cumsum,得到了近似(0, 0, 1, 1, 1)的二元门(binary gate)。0的部分表示割点之前的神经元,1的部分表示割点之后的神经元。

4424e05775c5104d011d71916ac5dbc5.png

5f28e9bb0ec49a0da24a18a9d86796c6.png

为了加深理解,举个简单的例子。

假设cell单元有5个神经元,对输入Softmax()后通常会使某个神经元(即割点)的值变得相对较大。假设softmax后值为(0.1, 0.1, 0.6, 0.1, 0.1),在这里割点就是第3个神经元。此时对该序列做cumsum后得到的结果是(0.1, 0.2, 0.8, 0.9, 1.0)。这一结果近似可以看做是划分成两个区域的二元门(0, 0, 1, 1, 1)

有了实体门e和关系门r之后,三个分区就能够计算出来了:

31e01f4f8704a563e2ea9c54e9a96056.png

这里用一个例子来说明上式的逻辑,假设e =(0,1,1),r =(1,1,0)

公式第1行里对实体门和关系门按元素相乘得到了共享区ρs为(0, 1, 0),即共享信息来自第2个神经元。

公式第2-3行用实体门或者关系门减去共享区得到了任务独享区ρe. ρr分别为(0, 0, 1)和(1, 0, 0),这说明NER和RE的独占信息分别来自第1,3个神经元。

其中公式下标后面的ct-1表示分区的对象是t-1时刻的cell单元。

文章里对两类cell单元分别进行了分区操作,一类是代表历史信息的ct-1,另一类是代表当前信息的ct。最后把两类cell的分区信息加起来,得到了总的分区信息:

8049b781c93151a75ab996fa51387410.png

过滤

过滤阶段需要对三个分区进行组合过滤,组合过滤的原则是使NER和RE能够平等地获得共享区信息,同时让NER和RE分别专享实体区和关系区信息,这样可以在保证均衡交互的同时剔除掉与任务无关的信息。最后组合的信息分别存储在三个记忆单元中(实体记忆µe,关系记忆µr以及共享记忆µs):

12fe67a72d8411884374830fed0b0bce.png

最后对记忆单元进行简单的非线性处理即可得到最后需要的任务特征:

2b86c9be9ca4241d58170d677213036e.png

由于模型采用了自回归编码的方式,最后还需要产生下一时刻的cell state和hidden state:

326de7e30dedb60c1b1cb77e65b7a2e1.png

另外作者还提出使用句子级别的全局特征来作为解码的补充信息:

adc246388e5238f06b7717f890732d72.png

解码部分

模型在解码的时候把NER和RE分成了两个独立的部分。对句子中的每对单词,作者将词级别的任务特征和句子级别的全局特征进行拼接,把多分类问题转化成多个二分类问题来进行类别预测(NER里是实体类别,RE里是关系类别):

542e11381c9774305b74639b46ca781f.png

NER(wi, wj)在NER中分别表示实体的首尾词,在RE中分别表示Subject实体和Object实体的起始词。损失函数使用的是二分类损失函数BCEloss。

主实验

作者在6个数据集上做了实验,可以看到模型的表现很好,在性能上超过了Tplinker、Table-Sequence和PURE等多个SoTA模型。

66110c76d6de834aa1e508c97c478cbd.png

消融实验

作者对编码器的层数、方向、编码方式、分区细粒度以及解码方式上都做了消融实验,从结果来看,新提出的联合编码相较于序列编码和平行编码有着不小的提升。

0f19becb2cdeec1b3875414725445240.png

探讨RE对NER的影响

众所周知,NER是RE的上游任务,对RE的具有非常大的促进作用。但是RE是否也会在一定程度上影响NER?这一影响是否大到非做联合抽取不可的程度?前人在这一问题上讨论的很少。

此前对这一问题进行过分析的有“A Frustratingly Easy Approach for Entity and Relation Extraction”。这篇论文提出了流水线抽取模型PURE,并得出RE对NER预测没多大用处的结论。

在本文中,作者对该结论以及即支撑实验提出了质疑,并通过实验得出了与PURE截然相反的结论:RE对NER具有显著的积极影响。

首先作者按照实体是否出现在三元组中将其划分为两类:in-triple和out-of-triple,并分别测试两组实体的抽取效果。

b4de72ec25b166d5bdf80b6c08cd8c89.png

结果显示,NER预测中in-triple实体的F1值要显著高于out-of-triple。这说明预测未出现在三元组中(即不包含RE信息)的实体要更加得困难。

另外作者在NER上使用了鲁棒性测试来评估模型对输入扰动的鲁棒性,扰动方法用了复旦大学张奇老师组提出的TextFlint

c2c8ab4b5397d8a335b9d2d274dde56e.png

总体来说联合模型在输入扰动下性能下降的幅度要小于其他不引入RE信息的baseline,尤其是CrossCategory(该方法将实体随机替换成其他在多语境下可能存在不同实体类别的实体, 比如同时可作为地名和人名的Washington)。可以看到RE信息的引入让NER预测变得更加鲁棒。

由以上两个实验,作者得出RE对NER具有积极明显的促进作用。并且作者认为由于PURE采用了有偏的实验设置,其结论不具备可靠性。
有偏体现在两点:一是设置联合抽取baseline时对NER和RE使用了Share Encoder,这种方法会造成任务间的侵蚀作用:即对其中一个任务有用的信息,可能对另外一个任务来说是无关甚至有害的。二是采用了out-of-triple类实体占绝大多数比例的ACE05数据集来进行评估,而out-of-triple实体抽取本身并不需要RE信息。


投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

d149fe290f405fd791fbcfb5d91ec209.png

记得备注呦

整理不易,还望给个在看!


推荐阅读
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
author-avatar
执笔W写下我们的故事
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有